Soru & Cevap

Fancy Index Ne İşe Yaramaktadır? Avantajları Nelerdir?

13.08.2021 - 03:11

Veri Manipülasyonu videolarını izlerken Fancy Index'in ne işe yarayacağını tam olarak anlayamadım. 

469 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user thorinmeekalkan
thorinmeekalkan
18.12.2021 - 02:13

aslında fancy index yerine loc yahut iloc kullanarak aynı işlemleri endek bağımlı yada bağımsız olarak seçebileceğiniz bu loc formatlarında tasarlamanız kafa karışıkığı sorununu minimuma indirir.Başarılar.

Profile picture for user yigitatesh
yigitatesh
16.08.2021 - 12:13

Fancy indexing, bir array ya da DataFrame içine bir indis listesi konularak o listedeki indislerin seçilmesidir. 

 

Örneğin arr adında şöyle bir arrayimiz olsun:   arr = numpy.array([61, 83, 8, 91, 49, 55, 75, 40, 45, 24])

Bir liste içine bu arrayden istediğimiz indislerini koyarak o indislerdeki verileri alabiliriz.

 

Örneğin çift sayılı indisleri almak istiyorsam, indisler = [0, 2, 4, 6, 8] adlı bir indis listesi oluşturabilirim.

Sonra da cift_indisliler = arr[indisler] diyerek fancy indexing kullanarak çift sayılı indislerdeki verileri alabilirim.

cift_indisliler arrayinin çıktısı şöyle olacaktır:    array([61, 8, 49, 75, 45])

Çağrı Akıncı
16.08.2021 - 12:48

Dediğinizi çok iyi anladım fakat bunun bize kattığı nedir? Ne avantaj sağladı? Bunu böyle yaparak ne elde etmiş olduk o konuda kafamda soru işareti var. Sorular 120 karakterle sınırlı olmasa daha iyi örneğiyle soracaktım fakat siz bir örnek vermişsiniz zaten. 

Mehmet Yiğit Ateş
17.08.2021 - 02:32

Anladım, o zaman sonuç odaklı bir örnek vereyim :)

filmler adında bir film isimleri arrayi ve puanlar adında bir filmlerin puanları arrayi olsun. Puanı en yüksek olan 5 filmi seçmek istiyorsak:

sirali_indisler = np.argsort(puanlar)[::-1] diyerek puanları sıralayarak sıralanmış puanları değil de o puanların indislerini alabiliriz. Sonra da en_iyi_5 = filmler[sirali_indisler][:5]  diyerek filmleri puanlarına göre sıralayabilir ve en iyi 5 filmi elde edebiliriz. Dikkat edersek filmleri sıralamak için fancy indexing kullanmak zorundayız çünkü film arrayini puan arrayine göre sıralıyoruz. Bu yöntemden farklı bir yöntem bulabilirseniz de bu yöntemin çok daha performanslı olduğunu görürsünüz.

Bu kullanım şekli Makine Öğrenmesi algoritması olan KNN algoritmasında da var. Veri noktalarını uzaklıklarına göre sıralıyor o algoritmada.

Umarım güzel bir örnek olmuştur.